package com.zenithmind.version.pojo.vo;

import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;

/**
 * 仓库VO
 * 
 * @author ZenithMind Team
 * @since 2025-01-09
 */
@Data
@Schema(description = "仓库VO")
public class RepositoryVO {

    /**
     * 仓库ID
     */
    @Schema(description = "仓库ID")
    private String id;

    /**
     * 仓库名称
     */
    @Schema(description = "仓库名称")
    private String name;

    /**
     * 仓库描述
     */
    @Schema(description = "仓库描述")
    private String description;

    /**
     * 仓库所有者ID
     */
    @Schema(description = "仓库所有者ID")
    private String ownerId;

    /**
     * 仓库所有者名称
     */
    @Schema(description = "仓库所有者名称")
    private String ownerName;

    /**
     * 仓库类型（1-公开，2-私有，3-内部）
     */
    @Schema(description = "仓库类型（1-公开，2-私有，3-内部）")
    private Integer type;

    /**
     * 仓库类型名称
     */
    @Schema(description = "仓库类型名称")
    private String typeName;

    /**
     * 仓库状态（0-禁用，1-启用，2-归档）
     */
    @Schema(description = "仓库状态（0-禁用，1-启用，2-归档）")
    private Integer status;

    /**
     * 仓库状态名称
     */
    @Schema(description = "仓库状态名称")
    private String statusName;

    /**
     * 默认分支
     */
    @Schema(description = "默认分支")
    private String defaultBranch;

    /**
     * 仓库大小（字节）
     */
    @Schema(description = "仓库大小（字节）")
    private Long size;

    /**
     * 仓库大小（格式化）
     */
    @Schema(description = "仓库大小（格式化）")
    private String sizeFormatted;

    /**
     * 文件数量
     */
    @Schema(description = "文件数量")
    private Integer fileCount;

    /**
     * 提交数量
     */
    @Schema(description = "提交数量")
    private Integer commitCount;

    /**
     * 分支数量
     */
    @Schema(description = "分支数量")
    private Integer branchCount;

    /**
     * 标签数量
     */
    @Schema(description = "标签数量")
    private Integer tagCount;

    /**
     * 贡献者数量
     */
    @Schema(description = "贡献者数量")
    private Integer contributorCount;

    /**
     * 是否允许Fork（0-否，1-是）
     */
    @Schema(description = "是否允许Fork（0-否，1-是）")
    private Integer allowFork;

    /**
     * 是否允许Issues（0-否，1-是）
     */
    @Schema(description = "是否允许Issues（0-否，1-是）")
    private Integer allowIssues;

    /**
     * 是否允许Wiki（0-否，1-是）
     */
    @Schema(description = "是否允许Wiki（0-否，1-是）")
    private Integer allowWiki;

    /**
     * 仓库语言
     */
    @Schema(description = "仓库语言")
    private String language;

    /**
     * 仓库主页URL
     */
    @Schema(description = "仓库主页URL")
    private String homepage;

    /**
     * 克隆URL
     */
    @Schema(description = "克隆URL")
    private String cloneUrl;

    /**
     * SSH URL
     */
    @Schema(description = "SSH URL")
    private String sshUrl;

    /**
     * 最后推送时间
     */
    @Schema(description = "最后推送时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime lastPushTime;

    /**
     * 最后活动时间
     */
    @Schema(description = "最后活动时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime lastActivityTime;

    /**
     * 创建时间
     */
    @Schema(description = "创建时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @Schema(description = "更新时间")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;
}
